C语言/C++实现栈操作 您所在的位置:网站首页 c语言栈的基本操作 菜鸟教程 C语言/C++实现栈操作

C语言/C++实现栈操作

2023-06-16 10:39| 来源: 网络整理| 查看: 265

一、栈的概念

栈是一种常用的数据结构,它遵循先入后出(Last-In-First-Out,LIFO)的原则。栈的操作只在栈的一端进行,该端被称为栈顶,而另一端称为栈底。栈的基本操作包括压栈(入栈-push)和弹栈(出栈-pop),分别用于将元素添加到栈顶和从栈顶删除元素。

二、栈的实现

我们可以使用C语言中的数组来实现栈。下面是一个基本的栈的定义:

#define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int top; } Stack;

在这里,我们使用了一个数组data来存储栈的元素,以及一个整数top来表示栈顶的位置。栈为空时,top的值为-1。

1、初始化栈

在使用栈之前,我们需要先将其进行初始化,可以通过将top设置为-1来实现:

//初始化栈 void init(Stack *stack) { stack->top = -1; printf("初始化栈完成......\n"); } 2、判断栈是否为空

我们可以通过判断top的值是否为-1来确定栈是否为空:

int isEmpty(Stack *stack) { return stack->top == -1; } 3、判断栈是否已满

为了防止栈溢出,我们需要在执行push操作之前检查栈是否已满。当top的值等于MAX_SIZE-1时,表示栈已满:

int isFull(Stack *stack) { return stack->top == MAX_SIZE - 1; } 4、执行压栈操作

压栈操作用于将元素添加到栈顶,首先需要判断栈是否已满,如果栈未满,将元素添加到top所指向的位置,并将top向上移动一个位置:

//入栈操作 void push(Stack *stack, int element) { if (!isFull(stack)) { stack->data[++stack->top] = element; printf("完成一次入栈,入栈元素:%d\n",element); } else { printf("栈满,不能入栈。\n"); } } 5、执行弹栈操作

弹栈操作用于删除栈顶的元素,并返回该元素的值,首先需要判断栈是否为空,如果栈非空,返回top位置的元素并将top向下移动一个位置:

//出栈操作 int pop(Stack *stack) { if (!isEmpty(stack)) { printf("完成一次出栈,"); return stack->data[stack->top--]; } else { printf("栈空,不能出栈\n"); return -1; } } 三、示例代码

下面是一个使用栈的简单示例代码,展示了如何进行压栈和弹栈操作:

#include //栈容 #define MAX_SIZE 100 typedef struct { int data[MAX_SIZE]; int top; } Stack; //初始化栈 void init(Stack *stack) { stack->top = -1; printf("初始化栈完成......\n"); } //判断栈是否为空 int isEmpty(Stack *stack) { return stack->top == -1; } //判断是否栈满 int isFull(Stack *stack) { return stack->top == MAX_SIZE - 1; } //入栈操作 void push(Stack *stack, int element) { if (!isFull(stack)) { stack->data[++stack->top] = element; printf("完成一次入栈,入栈元素:%d\n",element); } else { printf("栈满,不能入栈。\n"); } } //出栈操作 int pop(Stack *stack) { if (!isEmpty(stack)) { printf("完成一次出栈,"); return stack->data[stack->top--]; } else { printf("栈空,不能出栈\n"); return -1; } } //遍历栈内元素 void printStack(Stack *stack){ printf("栈内元素为:"); int index=stack->top; while(index>=0){ printf("%d\t",stack->data[index--]); } printf("\n"); } int main() { Stack stack; init(&stack); push(&stack, 1); printStack(&stack); push(&stack, 2); printStack(&stack); push(&stack, 3); printStack(&stack); printf("出栈元素: %d\n", pop(&stack)); printf("出栈元素: %d\n", pop(&stack)); printf("出栈元素: %d\n", pop(&stack)); return 0; }

以上代码会输出以下结果:

Popped element: 3 Popped element: 2 Popped element: 1

这就是用C语言实现栈的基本操作的详细教程。希望这对你有所帮助!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有